The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have found their way into just about every aspect of the American life style. One reason for this proliferation is the ability of computer systems to perform a variety of tasks in an efficient manner. The mechanisms used by computer systems to perform these tasks are called computer programs.
Like computer systems themselves, the development of computer programs has evolved over the years. The EDVAC system used what was called a "one address" computer programming language. This language allowed for only the most rudimentary computer programs. By the 1960s, improvements in computer programming languages led to computer programs that were so large and complex that it was difficult to manage and control their development and maintenance.
Therefore, the focus of the 1970's was on developing programming methodologies and environments that could better accommodate the increasing complexity and cost of large computer programs. One such methodology is called Object Oriented Programming (OOP). Though it has been some time since the fundamental notions of OOP were first developed, OOP systems are becoming more and more prevalent because it is felt that use of OOP can greatly increase the efficiency of computer programmers. Not surprisingly, objects are central to OOP technology. A single object represents an individual operation or a group of operations that are performed by a computer system upon information controlled by the object. Objects can be thought of as autonomous agents that work together to perform certain tasks. Sometimes entire computer programs are made up of groupings of objects and sometimes objects are simply accessed by more traditional computer programs to perform one specific task or subtask. Regardless of whether an object is accessed by another object or not, the accessed object is said to by a server object and the accessing entity is said to be a client of that object.
While the use of OOP has lead to greater programmer efficiency, that same use brings with it several challenges that have yet to be overcome by prior art mechanisms. One such challenge involves maintaining (i.e., updating and fixing) server objects in a way that does not cause problems with clients that have a current need for access to the server object or objects that are to be maintained. Existing object maintenance mechanisms avoid these problems by stopping the computer system or by deactivating the specific programs that are using the objects that require maintenance. A system or program is said to be quiesced when it has been made inactive. Of course, it is easy to see that it is undesirable to be forced to stop any level of system activity to perform what may be only minor maintenance. This is especially so in the banking and financial world where businesses constantly depend on minute to minute access to their computer systems.
Without a mechanism that can perform object maintenance without requiring system or program down-time, commercial computer users will never by able to fully capitalize on the benefits of object-oriented technology.